/**
 * 数组去重
 * 创建一个去重后的array数组副本。使用了SameValueZero做等值比较。只有第一次出现的元素才会被保留。
 * @param  {array} array  要检查的数组。
 */
export const uniq = (array) => {
  let result = array.filter(v => v)
  let hash = {}
  result = result.reduce((p, v) => {
    hash[v] ? '' : hash[v] = true && p.push(v)
    return p 
  }, [])
  return result
}
/**
 * 数组去重(根据条件)
 * 创建一个去重后的array数组副本。
 * @param  {array} array  要检查的数组。
 * @param  {string} field  条件字段。
 */
export const uniqBy = (array, field) => {
  let result = array.filter(v => v && (v[field]))
  let hash = {}
  result = result.reduce((p, v) => {
    hash[v[field]] ? '' : hash[v[field]] = true && p.push(v)
    return p 
  }, [])
  return result
}